home *** CD-ROM | disk | FTP | other *** search
- typedef struct TAG {
-
- int poly ; /* an index to a tagged polygon */
- int vert ; /* an index to the tagged vertex */
-
- } TAG ;
-
- typedef struct EXPRESSION {
-
- char name[80] ; /* name of the expression */
- float m[20] ; /* an expression vector */
- float bias ; /* an bias control for the muscles */
-
- } EXPRESSION ;
-
-
- typedef struct MUSCLE {
-
- int active ; /* activity switch for the muscle */
- float head[3] ; /* head of the muscle vector */
- float tail[3] ; /* tail of the muscle vector */
- float zone, /* zone of influence */
- fs, fe, mval ; /* zone, start, end, contraction */
- char name[80] ; /* name of the muscle */
- float clampv ; /* clamping value */
- float mstat ; /* current contraction value */
-
- } MUSCLE ;
-
-
- typedef struct VERTEX {
-
- float xyz[3] ; /* x,y,z of the vertex (modified) */
- float nxyz[3] ; /* x,y,z of the vertex (never modified) */
- int np ; /* number of polygons associated with node */
- int plist[30] ; /* list of polygons associated with node */
- float norm[3] ; /* polygon vertex normal */
-
- } VERTEX ;
-
-
- typedef struct POLYGON {
-
- VERTEX *vertex[3] ; /* pointer to an array of three vertices */
-
- } POLYGON ;
-
-
- typedef struct HEAD {
-
- int npindices ; /* number of polygon indices */
- int *indexlist ; /* integer index list of size npindices*4 */
-
- int npolylinenodes ; /* number of nodes in the poly line */
- float *polyline ; /* xyz nodes in the poly line */
-
- int npolygons ; /* total number of polygons */
- POLYGON **polygon ; /* pointer to the polygon list */
-
- int neyelidtags ; /* number of eyelid tags */
- TAG **eyelidtag ; /* pointer to the eyelid tags */
- float eyelidang ; /* rotation of the eyelids */
-
- int njawtags ; /* number of jaw tags */
- TAG **jawtag ; /* pointer to the eyelid tags */
- float jawang ; /* rotation of the jaw */
-
- int nmuscles ; /* number of muscles in the face */
- MUSCLE **muscle ; /* pointer to the muscle list */
-
- int nexpressions ; /* number of expressions in the */
- EXPRESSION **expression ; /* point to an expression vector */
-
- } HEAD ;
-
- /* main.c */
- extern int verbose;
-
- /* make_face.c */
- HEAD *create_face ( char *, char * ) ;
- void averaged_vertex_normals ( HEAD *face, int p,
- float *n1, float *n2, float *n3 ) ;
- void face_reset ( HEAD *face );
- void expressions ( HEAD *face, int e );
- void data_struct ( HEAD *face );
-
- /* display.c */
- void paint_polyline ( HEAD *face ) ;
- void paint_polygons ( HEAD *face, int type, int normals ) ;
- void calculate_polygon_vertex_normal ( HEAD *face );
- void paint_muscles ( HEAD *face );
-
- /* muscle.c */
- void activate_muscle (HEAD *face, float *vt, float *vh, float fstart, float fin, float ang, float val);
-
- /* fileio.c */
- void read_polygon_indices ( char *FileName, HEAD *face );
- void read_polygon_line ( char *FileName , HEAD *face );
- void read_muscles ( char *FileName , HEAD *face );
- void read_expression_vectors ( char *FileName , HEAD *face );
-
-